package br.com.vti.sisp_sicrim.antigo.controller.tela;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.controller.programa.Scrp1000;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe responsavel por encapsular o tratamento e as consistencias da tela Scrm1411
 * 
 * @author Incode - Data: mai/2014
 * 
 */
public class Scrm1411 {
	private boolean enviada = false;
	private String pagina = "/resources/antigo/jsp/Scrm1411.jsp";
	private String jVersaoj;
	private String dataCorrente;
	private String jFuncaoj;
	private String horaCorrente;
	private String jdiaini;
	private String jmesini;
	private String janoini;
	private String jdiafim;
	private String jmesfim;
	private String janofim;
	private int jDataIni;
	private int jDataFim;
	private String jEmpresaj;
	private String jProgramaj;
	private String mensagem = "";
	private String funcao = "0";
	private String campofocus = "";
	private String navegar = "";
	private Boolean temMensagem = false;
	private Result result;
	private Sessao sessao;
	private String total;
	private List<Scrr1600> listascrr1600 = new ArrayList<>();

	// Classes views
	// Classes includes
	public Scrm1411() {
		inicializar(false);
	}

	public Scrm1411(boolean primeiraVez, Sessao sessao) {
		this.sessao = sessao;
		inicializar(primeiraVez);
	}

	public void inicializar(boolean primeiraVez) {
		if (primeiraVez) {
			jVersaoj = "";
			dataCorrente = "";
			jFuncaoj = "";
			jdiaini = "";
			jmesini = "";
			janoini = "";
			jdiafim = "";
			jmesfim = "";
			janofim = "";
			jEmpresaj = "";
			jProgramaj = "";
			jEmpresaj = sessao.getScrg001().getWEmpresaw();
			jFuncaoj = sessao.getScrg001().getWFuncaow();
			jProgramaj = sessao.getScrg001().getWProgramaw();
			jVersaoj = sessao.getScrg001().getWVersaow();
		}
		horaCorrente = new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()); // *TIMX
	}

	public boolean receberTela(boolean primeiraVez, Result result) {
		// faz o tratamento das criticas necessarias para os dados da tela
		// recebida
		this.result = result;
		temMensagem = false;
		if (!primeiraVez) {
			return validar();
		} else {
			return true;
		}
	}

	public void enviarTela(boolean primeiraVez, Result result, String origem) {
		this.enviada = true;
		// rotina para enviar a tela
		// caso esteja setado valores para acoesFinais, executa as classes
		// correspondentes
		this.result = result;
		if (UtilBean.acoesFinais != null && !UtilBean.acoesFinais.isEmpty()) {
			UtilBean.processaAcao();
		} else {
			enviar(result, origem);
		}
	}

	public void enviar(Result result, String origem) {
		// redicionar para o jsp correspondente
		UtilBean.redireciona(pagina, result, origem);
	}

	public void enviarMensagem(String campo, String mensagem) {
		// formatar a mensagem de erro, posicionar no campo informa
		if (campo != null) {
			campofocus = campo;
		} else {
			campofocus = "";
		}
		this.mensagem = mensagem;
		temMensagem = true;
		// enviar(result, origem);
	}

	public boolean validar() {
		// validar os campos recebidos da tela
		UtilBean.funcao = this.funcao;
		ValidarFuncao();
		if (temMensagem) {
			return false;
		}
		sessao.getScrg001().setWEmpresaw(this.jEmpresaj);
		sessao.getScrg001().setWFuncaow(this.jFuncaoj);
		sessao.getScrg001().setWProgramaw(this.jProgramaj);
		sessao.getScrg001().setWVersaow(this.jVersaoj);
		return true;
	}

	private void ValidarFuncao() {
		// Consist�ncia F00funcao
		if (!((UtilBean.funcao.equals(UtilBean.ctt_retorna) || UtilBean.funcao.equals(UtilBean.ctt_processa)))) {
			enviarMensagem(null, "Tecla invalida");
			return;
		}
		if (UtilBean.funcao.equals(UtilBean.ctt_retorna)) {
			Scrp1000 scrp1000 = new Scrp1000(result, sessao);
			scrp1000.executar(null);
		}
	}

	public String getJversaoj() {
		return jVersaoj;
	}

	public void setJversaoj(String jVersaoj) {
		this.jVersaoj = jVersaoj;
	}

	public String getDataCorrente() {
		return dataCorrente;
	}

	public void setDataCorrente(String dataCorrente) {
		this.dataCorrente = dataCorrente;
	}

	public String getJfuncaoj() {
		return jFuncaoj;
	}

	public void setJfuncaoj(String jFuncaoj) {
		this.jFuncaoj = jFuncaoj;
	}

	public String getJdiaini() {
		return jdiaini;
	}

	public void setJdiaini(String jdiaini) {
		this.jdiaini = jdiaini;
	}

	public String getJmesini() {
		return jmesini;
	}

	public void setJmesini(String jmesini) {
		this.jmesini = jmesini;
	}

	public String getJanoini() {
		return janoini;
	}

	public void setJanoini(String janoini) {
		this.janoini = janoini;
	}

	public String getJdiafim() {
		return jdiafim;
	}

	public void setJdiafim(String jdiafim) {
		this.jdiafim = jdiafim;
	}

	public String getJmesfim() {
		return jmesfim;
	}

	public void setJmesfim(String jmesfim) {
		this.jmesfim = jmesfim;
	}

	public String getJanofim() {
		return janofim;
	}

	public void setJanofim(String janofim) {
		this.janofim = janofim;
	}

	public int getjDataIni() {
		return Integer.valueOf(this.janoini) * 10000 + Integer.valueOf(this.jmesini) * 100 + Integer.valueOf(this.jdiaini);
	}

	public void setjDataIni(int jDataIni) {
		this.jDataIni = jDataIni;
		this.janoini = String.valueOf(UtilBean.subStr(String.valueOf(jDataIni), 0, 4));
		this.jmesini = String.valueOf(UtilBean.subStr(String.valueOf(jDataIni), 4, 2));
		this.jdiaini = String.valueOf(UtilBean.subStr(String.valueOf(jDataIni), 6, 2));
	}

	public int getjDataFim() {
		return Integer.valueOf(this.janofim) * 10000 + Integer.valueOf(this.jmesfim) * 100 + Integer.valueOf(this.jdiafim);
	}

	public void setjDataFim(int jDataFim) {
		this.jDataFim = jDataFim;
		this.janofim = String.valueOf(UtilBean.subStr(String.valueOf(jDataFim), 0, 4));
		this.jmesfim = String.valueOf(UtilBean.subStr(String.valueOf(jDataFim), 4, 2));
		this.jdiafim = String.valueOf(UtilBean.subStr(String.valueOf(jDataFim), 6, 2));
	}

	public String getJempresaj() {
		return jEmpresaj;
	}

	public void setJempresaj(String jEmpresaj) {
		this.jEmpresaj = jEmpresaj;
	}

	public String getJprogramaj() {
		return jProgramaj;
	}

	public void setJprogramaj(String jProgramaj) {
		this.jProgramaj = jProgramaj;
	}

	public String getHoraCorrente() {
		return horaCorrente;
	}

	public void setHoraCorrente(String horaCorrente) {
		this.horaCorrente = horaCorrente;
	}

	public String getFuncao() {
		return funcao;
	}

	public void setFuncao(String funcao) {
		this.funcao = funcao;
	}

	public String getCampofocus() {
		return campofocus;
	}

	public void setCampofocus(String campofocus) {
		this.campofocus = campofocus;
	}

	public String getNavegar() {
		return navegar;
	}

	public void setNavegar(String navegar) {
		this.navegar = navegar;
	}

	public String getMensagem() {
		return mensagem;
	}

	public void setMensagem(String mensagem) {
		this.mensagem = mensagem;
	}

	public void setMensagemSaida(String mensagem) {
		this.mensagem = mensagem;
	}

	public boolean getEnviada() {
		return this.enviada;
	}

	public void setSessao(Sessao sessao) {
		this.sessao = sessao;
	}

	public List<Scrr1600> getListascrr1600() {
		return listascrr1600;
	}

	public void setListascrr1600(List<Scrr1600> listascrr1600) {
		this.listascrr1600 = listascrr1600;
	}

	public String getTotal() {
		return total;
	}

	public void setTotal(String total) {
		this.total = total;
	}

}
